<?php
/**
 * Class Linguagem{}
 * Responsavem em fazer a tradução de determinadas palavras.
 */
Class Linguagem {

    private $linguagem;
    private $caminhoArquivo;
    private $arquivo;
    private $modulo;
    private $smarty;
    public $dadosTraducao;
    
    /**
     * Define a lingua
     *
     * @param string $lingua nome da lingua
     * @example portugues, ingles, espanhol
     */
    public function setLingua($lingua) {
        $this->linguagem = $lingua;
    }

    /**
     * Define o caminho do arquivo.
     *
     * @param string $caminho caminho do arquivo
     * @example ../linguagem/cadastro/
     */
    public function setCaminhoArquivo($caminho) {
        $this->caminhoArquivo = $caminho;
    }

    /**
     * Define o modulo ou o nome inicial do arquivo
     *
     * @param string $modulo nome inicial do arquivo
     * @example 'cadastros.portugues.xml' pegar apenas 'cadastros'
     */
    public function setModulo($modulo) {
        $this->modulo = $modulo;
    }

    /**
     * Define para qual arquivo pegar dentro do xml
     *
     * @param string $arquivo nome do arquivo
     * @example area_atuacao
     */
    public function setArquivo($arquivo) {
        $this->arquivo = $arquivo;
    }

    /**
     * Responsavel em buscar dentro do xml a palavra desejada
     *
     * @param string $palavra nome da palavra
     * @return string Ira retornar a palavra na linguagem setada pelo metodo setLingua()
     */
    public function getTraducao($palavra) {
        try {
            $arquivo = "{$this->caminhoArquivo}{$this->modulo}.{$this->linguagem}.xml";
            if(file_exists($arquivo)) {
                $xml = simplexml_load_file($arquivo);
                return htmlspecialchars($xml->{$this->arquivo}->{$palavra});
            } else {
                throw new Exception("N&atilde;o foi possivel encontrar o arquivo de Linguagem");
            }
        } catch (Exception $e) {
            new Excecao($e);
            return false;
        }
    }

    public function setSmarty($smarty) {
        $this->smarty = $smarty;
    }
    
    public function getTodasTraducoes() {
        try {
            $arquivo = "{$this->caminhoArquivo}{$this->modulo}.{$this->linguagem}.xml";
            if(file_exists($arquivo)) {                
                $xml = simplexml_load_file($arquivo);
                $traducoes = $this->objetoParaArray($xml->{$this->arquivo});
                $this->smarty->assign("traducoes_".$this->arquivo,$traducoes);
                $this->dadosTraducao = $traducoes;
                return $this->dadosTraducao;
            } else {
                throw new Exception("N&atilde;o foi possivel encontrar o arquivo de Linguagem");
            }
        } catch (Exception $e) {
            new Excecao($e);
            return false;
        }
    }

    public function objetoParaArray ($objeto) {
	if ( count($objeto) > 1 ) {
            $dados = array();
            for ( $i = 0; $i < count($objeto); $i++ ) {
                $dados[] = get_object_vars($objeto[$i]);
            }
            return $dados;
	} else {
            return get_object_vars($objeto);
	}
    }
}
?>